class Base {
    public int a = 1;
    public int b = 2;
    public void testA() {
        System.out.println("testA::Base");
    }
    public void testB() {
        System.out.println("testB::Base");
    }
}
class Derived extends Base {
    public int b = 20;
    public int c = 3;
    public void testA(int a) {
        System.out.println("testA::Derived");
    }
    public void testB() {
        System.out.println("testB::Derived");
    }
    public void method() {
        System.out.println(this.a);
        System.out.println(this.b);
        System.out.println(super.b);
        System.out.println(this.c);
        testA(10);
        testA();
        testB();
        super.testB();
    }
    public static void main(String[] args) {
        //1.子类中访问父类的成员变量
        //1.1调用不同名变量时，先在子类变量中寻找有就优先访问自己的，如果没有就在父类变量中寻找，不存在则编译错误。
        //1.2调用同名变量时，采取就近优先原则，优先调用子类变量，不存在则编译错误。
        //2.在子类中访问父类的成员方法
        //2.1成员方法不同名时，先在子类中寻找有就优先访问自己的，如果没有找到就在父类成员方法中调用，不存在则编译错误。
        //2.2成员方法同名时，优先调用子类成员方法。
        Derived derived = new Derived();
        derived.method();
        //3.super关键字
        //3.1子类方法中访问父类成员
        //3.2只能在非静态方法中进行访问
    }
}
public class Test2 {

}
